From 4697556cac819c47d068819b9fc9c3b4ea84e279 Mon Sep 17 00:00:00 2001
From: Leonardo Bishop <me@leonardobishop.com>
Date: Thu, 14 Aug 2025 18:07:12 +0100
Subject: Merge confplanner-web and replace fiber with native net/http

---
 web/pages/tracks/[slug].vue | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 web/pages/tracks/[slug].vue

(limited to 'web/pages/tracks/[slug].vue')

diff --git a/web/pages/tracks/[slug].vue b/web/pages/tracks/[slug].vue
new file mode 100644
index 0000000..27fb97d
--- /dev/null
+++ b/web/pages/tracks/[slug].vue
@@ -0,0 +1,45 @@
+<script setup lang="ts">
+import { TrainTrack } from 'lucide-vue-next';
+import { useScheduleStore } from '~/stores/schedule';
+
+const route = useRoute();
+const scheduleStore = useScheduleStore();
+
+const track = scheduleStore.schedule?.tracks.find((track) => track.slug === route.params.slug);
+</script>
+
+<template>
+  <Panel v-if="track" :title="track.name" :breadcrumbs="[{ text: 'Tracks', to: '/tracks' }]" :icon="TrainTrack">
+    <ul class="events-list">
+      <li 
+        v-for="event in scheduleStore.eventsPerTrack[track.name]" 
+        :key="event.id" 
+        class="event-item"
+      >
+        <EventListing :event="event" />
+      </li>
+    </ul>
+  </Panel>
+</template>
+
+<style>
+.events-list {
+  list-style: none;
+  margin: -1rem 0;
+  padding: 0;
+  display: grid;
+}
+
+.event-item {
+  border-bottom: 1px solid var(--color-background-muted); 
+}
+
+.events-title {
+  margin-bottom: 1rem;
+}
+
+.event-item:last-child {
+  border-bottom: none; 
+}
+
+</style>
\ No newline at end of file
-- 
cgit v1.2.3-70-g09d2

